#pragma once

#include "Matrix4.h"
#include "Vector3.h"
#include "Quaternion.h"

namespace soft_renderer
{
	class Object3D
	{
	private:
		Matrix4 _transformMatrix;
		Vector3 _position;
		Quaternion _quaternion;
		Vector3 _scale;
		Matrix4 _normalMatrix;

	public:
		Object3D();

		void setTransform(Vector3 position, Quaternion quaternion, Vector3 scale);
		void setPosition(Vector3 position);
		void setQuaternion(Quaternion quaternion);
		void setScale(Vector3 scale);
		void updateTransformMatrix();
		const Matrix4& transformMatrix() const;
		const Matrix4& normalMatrix() const;
	};
}
